<?php

/**
 * 
 * Modelo Persona, Utilizado en el controlador/accion Fichas/Registro
 * Primer Paso para el Registro de la Solicitud de Acreditación
 * @author Diego Toala
 *
 */
class Registro extends CFormModel
{
	public $persona_nombres;
	public $persona_apellidos;
	public $persona_genero;
	public $persona_altura_cm;
	public $persona_peso_kg;
	public $persona_tipo_sangre;
	public $persona_tipo_identificacion;
	public $persona_numero_identificacion;
	public $persona_fecha_expiracion_documento;
	public $persona_fecha_nacimiento;
	public $persona_direccion;
	public $persona_telefono;
	public $persona_movil;
	public $persona_email;
	public $persona_ciudad_estado;
	public $persona_pais;
	public $persona_nacionalidad;
	public $persona_nombre_credencial;
	public $inscripcion_evento;
	public $inscripcion_deporte;
	public $inscripcion_modalidad;
	public $inscripcion_categoria;
	public $inscripcion_aplica;
	public $inscripcion_foto;
	

	public function rules() {
						
		return array(			
/*			// REGLAS ATLETAS
			array('persona_nombres,persona_apellidos,persona_nombre_credencial,persona_genero,persona_email,persona_movil,persona_altura_cm,persona_peso_kg,persona_tipo_sangre,persona_numero_identificacion,persona_tipo_identificacion,persona_fecha_expiracion_documento,persona_fecha_nacimiento,persona_pais,persona_nacionalidad,persona_ciudad_estado,persona_direccion,persona_telefono,persona_email,inscripcion_evento,inscripcion_categoria,inscripcion_aplica,inscripcion_deporte,inscripcion_modalidad', 'required','on'=>'atletas'),			
			array('persona_email', 'email','on'=>'atletas'),	
			array('persona_nombres,persona_apellidos', 'length', 'max'=>100,'min'=>3,'tooLong'=>'El nombre y apellido no debe exceder 100 caracteres','tooShort'=>'El nombre y apellido debe tener mas de 10 caracteres','on'=>'atletas'),
			array('persona_nombre_credencial', 'length', 'max'=>45,'min'=>10,'tooLong'=>'El nombre de la credencial no debe exceder 45 caracteres','tooShort'=>'El nombre de la credencial debe tener mas de 10 caracteres','on'=>'atletas'),	
			array('persona_numero_identificacion', 'length', 'max'=>45,'min'=>5,'tooLong'=>'El número de identificación no debe exceder 45 caracteres','tooShort'=>'El número de identificación debe tener mas de 5 caracteres','on'=>'atletas'),
			array('persona_direccion', 'length', 'max'=>500,'min'=>5,'tooLong'=>'La dirección no debe exceder 500 caracteres','tooShort'=>'La dirección debe tener mas de 5 caracteres','on'=>'atletas'),		
			array('persona_ciudad_estado', 'length', 'max'=>80,'min'=>3,'tooLong'=>'El nombre de la ciudad o estado no debe exceder 80 caracteres','tooShort'=>'El nombre de la ciudad o estado debe tener mas de 3 caracteres','on'=>'atletas'),
			array('persona_altura_cm','numerical', 'integerOnly'=>false,'min'=>'100','max'=>'250','tooBig'=>'La altura no debe exceder 250 CM.','tooSmall'=>'La altura debe ser más de 100 CM.','on'=>'atletas'),
			array('persona_peso_kg','numerical', 'integerOnly'=>false,'min'=>20,'max'=>220,'tooBig'=>'El peso no debe exceder 120 KG.','tooSmall'=>'El peso debe ser más de 20 KG.','on'=>'atletas'),
				*/
			
			array('persona_nombres,persona_apellidos,persona_nombre_credencial,persona_tipo_sangre,persona_numero_identificacion,persona_tipo_identificacion,inscripcion_evento,inscripcion_categoria,inscripcion_aplica,inscripcion_deporte,inscripcion_modalidad', 'required'),			
			//array('persona_email', 'email','on'=>'todos'),	
			array('persona_nombres,persona_apellidos', 'length', 'max'=>100,'min'=>3,'tooLong'=>'El nombre y apellido no debe exceder 100 caracteres','tooShort'=>'El nombre y apellido debe tener mas de 10 caracteres'),
			array('persona_nombre_credencial', 'length', 'max'=>45,'min'=>10,'tooLong'=>'El nombre de la credencial no debe exceder 45 caracteres','tooShort'=>'El nombre de la credencial debe tener mas de 10 caracteres'),	
			array('persona_numero_identificacion', 'length', 'max'=>45,'min'=>5,'tooLong'=>'El número de identificación no debe exceder 45 caracteres','tooShort'=>'El número de identificación debe tener mas de 5 caracteres'),
			array('persona_email,persona_genero,persona_movil,persona_altura_cm,persona_peso_kg,persona_tipo_identificacion,persona_fecha_expiracion_documento,persona_fecha_nacimiento,persona_pais,persona_nacionalidad,persona_ciudad_estado,persona_direccion,persona_telefono,', 'length', 'min'=>0),
		
		);
	}
	
	
	public function getForm()
	{
		
		if(isset($_SESSION['foto']) && !empty($_SESSION['foto']))
		{
			
		$this->inscripcion_foto=$_SESSION['foto'];
		//TODO QUITAR EL PASO DE LA VALIDACION			
			
		$criteria=new CDbCriteria;
		$criteria->select='pais_id,pais_nombre';  // only select the 'title' column
		$criteria->order='pais_nombre';
		/*$criteria->condition='postID=:postID';
		$criteria->params=array(':postID'=>10)*/
		$paises = Pais::model()->findAll($criteria); 		
		
		$usuario=User::model()->findByPk(Yii::app()->user->id);		
		$usuarioPaisId=0;
				
		
		/* OPCIONES DE GRUPO */
		$grupo=$_SESSION['grupo'];
		$grupoNombre='';
		$opcionesGrupo= explode(';', $usuario->opciones_grupo);
		$arrayGrupos = array();
		
		foreach ($opcionesGrupo as $key=>$value)
		{
			$opcionesIndividual= explode(',', $value);
			if(md5($opcionesIndividual[1])==$grupo)	
			{		
				$arrayGrupos[$opcionesIndividual[0]]=strtoupper($opcionesIndividual[1]);
				$grupoNombre = $opcionesIndividual[1];
			}			
		}
		
		$connection = Yii::app()->db;
		$command = $connection->createCommand("SELECT a.categoria_aplica_id,a.categoria_aplica,g.grupo_descripcion,c.categoria_descripcion,c.categoria_observacion
			FROM grid_categoria  c
			INNER JOIN grid_grupo g ON
			c.categoria_grupo=g.grupo_id
			INNER JOIN grid_categoria_aplica a ON
			c.categoria_id = a.categoria_aplica_categoria_id
			where g.grupo_observacion=:grupo_observacion
			order by a.categoria_aplica");
		
		$command->bindParam(':grupo_observacion',$grupoNombre,PDO::PARAM_STR);
		
		$dataReader = $command->query();
		
		$rows=$dataReader->readAll();
		
		$arrayFunciones= array();
		
		foreach ($rows as $row)		
			$arrayFunciones[$row['categoria_aplica_id']]=$row['categoria_aplica'];					
					
		/* FIN OPCIONES DE GRUPO */
				
		
		/* PAISES */
		$arrayFin=array();
		
		foreach ($paises as $pais)
		{
				if	($usuario->pais==strtolower($pais->pais_nombre))
					$usuarioPaisId=$pais->pais_id;
				else
					$arrayFin[$pais->pais_id]=$pais->pais_nombre;			
		}
		
		$arrayPaises= array();
		$arrayPaises[$usuarioPaisId]=ucfirst($usuario->pais);
		
		foreach ($arrayFin as $key=>$value)
		{
			$arrayPaises[$key]=$value;
		}
		
		/* FIN PAISES */
		
		$eventoQuery = Evento::model()->findAll();
		$eventos = array();
		
		/* EVENTO */
		
		foreach ($eventoQuery as $evento)	
			$eventos=$evento->evento_id;
			/*=strtoupper($evento->evento_descripcion);*/
		
		/* FIN EVENTO */
			

		/* DEPORTE */	
		$deporteQuery = DeporteActividad::model()->findAll();
		$deportes = array();
		
		foreach ($deporteQuery as $deporte)	
			$deportes[$deporte->deporte_actividad_id]=$deporte->deporte_actividad_descripcion;
		
		/* FIN DEPORTE */		
			
		$fechaHoy = date("m/d/Y");
		
		
		
		
		return new CForm(array(
		
			'title'=>'Registro de Datos Personales',
			'showErrorSummary'=>true,
			'attributes'=>array('enctype'=>'multipart/form-data'),
			'elements'=>array(			
			
				'<div class="span-9">',
				'persona_nombres'=>array(	
					'attributes'=>array('title'=>'Ingrese los Nombres de la persona a registrar.','size'=>'45px'),			
					'type'=>'text',
					'label'=>'NOMBRES:',
				),
				'persona_apellidos'=>array(	
					'attributes'=>array('title'=>'Ingrese los Apellidos de la persona a registrar.','size'=>'45px'),			
					'type'=>'text',
					'label'=>'APELLIDOS:',
				),
				'</div>',
				
				'<div class="span-9">',
				'persona_nombre_credencial'=>array(
					'attributes'=>array('title'=>'Ingrese el nombre tal cual desea que aparezca en la credencial.','size'=>'45px'),
					'type'=>'text',
					'label'=>'NOMBRE EN LA ACREDITACIÓN:',
				),
				'</div>',								
								
				'<div class="span-2"><img src="'.Yii::app()->request->baseUrl.'/'.$this->inscripcion_foto.'" alt="foto" width="150px" height="150px"/></div>',
				
				'<div class="span-9">',
				'persona_genero'=>array(
					'attributes'=>array('title'=>'Elija el Genero de la Persona a registrar.'),
					'type'=>'dropdownlist',
					'items'=>array(						
						'MASCULINO'=>'MASCULINO',
						'FEMENINO'=>'FEMENINO'						
					),
					'label'=>'GÉNERO:'
				),
				'</div>',
				
				'<div class="span-9">',
				'persona_altura_cm'=>array(
					'attributes'=>array('title'=>'Ingrese la altura de la persona en centimetros.'),
					'type'=>'text',
					'label'=>'ALTURA (CM):'
				),
				'</div>',
				
				'<div class="span-9">',
				'persona_peso_kg'=>array(
					'attributes'=>array('title'=>'Ingresar el peso de la persona en kilogramos.'),
					'type'=>'text',
					'label'=>'PESO (KG):'
				),
				'</div>',
				
				'<div class="span-9">',
				'persona_tipo_sangre'=>array(
				'attributes'=>array('title'=>'Elija el grupo sanguíneo al que pertenece la persona a registrar.'),
					'type'=>'dropdownlist',
					'label'=>'GRUPO SANGUÍNEO:',
					'items'=>array(						
						'O-'=>'O-',
						'O+'=>'O+',
						'A-'=>'A-',
						'A+'=>'A+',
						'B-'=>'B-',
						'B+'=>'B+',
						'AB-'=>'AB-',
						'AB+'=>'AB+',
						'INDETERMINADO'=>'INDETERMINADO')
				),	
				'</div>',
				
				'<div class="span-9">',
				'persona_tipo_identificacion'=>array(
					'attributes'=>array('title'=>'Elija el tipo de identificación con el registrará a la persona.'),
					'type'=>'dropdownlist',
					'label'=>'TIPO DE IDENTIFICACIÓN:',
					'items'=>array(						
						'PASAPORTE'=>'PASAPORTE',
						'CEDULA'=>'CEDULA',
						'OTROS'=>'OTROS'
						)
				),	
				'</div>',
				
				'<div class="span-9">',
				'persona_numero_identificacion'=>array(
					'attributes'=>array('title'=>'Ingrese el número de identificación, puede ingresar un codigo alfanumérico de requerirlo.'),
					'type'=>'text',
					'label'=>'NÚMERO IDENTIFICACIÓN:'
				),		
				'</div>',
				
				'<div class="span-9">',
				'persona_fecha_expiracion_documento'=>array(					
					'type'=>'zii.widgets.jui.CJuiDatePicker',
					'attributes'=>array(						
						'options'=>array(
							'dateFormat'=>'dd/mm/yy', 
                        	'altFormat'=>'dd/mm/yy', 
                        	'changeMonth'=>'true', 
                        	'changeYear'=>'true', 
                        	'yearRange'=>'2011:2040', 				
							)
					),
					'label'=>'FECHA DE EXPIRACIÓN DEL DOCUMENTO (día/mes/año):'
				),	
				'</div><hr/>',
				
				'<div class="span-9">',
				'persona_fecha_nacimiento'=>array(
					'type'=>'zii.widgets.jui.CJuiDatePicker',
					'attributes'=>array(
						'options'=>array(
							'dateFormat'=>'dd/mm/yy', 
                        	'altFormat'=>'dd/mm/yy', 
                        	'changeMonth'=>'true', 
                        	'changeYear'=>'true', 
                        	'yearRange'=>'1900:2011', 				
							)
					),
					'label'=>'FECHA DE NACIMIENTO (día/mes/año):'
				),		
				'</div>',
				
				
				'<div class="span-9">',
				'persona_pais'=>array(
					'attributes'=>array('title'=>'Elija el País de Nacimiento.'),
					'type'=>'dropdownlist',
					'label'=>'PAÍS DE NACIMIENTO:',
					'items'=>
				$arrayPaises
				),	
				'</div>',
				
				'<div class="span-9">',
				'persona_nacionalidad'=>array(
					'attributes'=>array('title'=>'Elija el País de Nacionalidad.'),
					'type'=>'dropdownlist',
					'label'=>'NACIONALIDAD:',
					'items'=>
				$arrayPaises
				),	
				'</div>',
				
				
				
				
				'<div class="span-9">',
				'persona_ciudad_estado'=>array(
					'attributes'=>array('title'=>'Ingrese la Ciudad o Estado de la Persona.','size'=>'45px'),
					'type'=>'text',
					'label'=>'CIUDAD O ESTADO:'
				),	
				'</div>',
				
				'<div class="span-9">',
				'persona_direccion'=>array(
					'attributes'=>array('title'=>'Ingrese la Dirección de la Persona.','cols'=>'45','rows'=>'3'),
					'type'=>'textarea',
					'label'=>'DIRECCIÓN:'
				),
				'</div>',
				
				'<div class="span-9">',
				'persona_telefono'=>array(
				'attributes'=>array('title'=>'Ingrese el Número Telefónico Fijo para Contácto.'),
					'type'=>'text',
					'label'=>'TELÉFONO:'
				),
				'</div>',
				
				'<div class="span-9">',
				'persona_movil'=>array(
					'attributes'=>array('title'=>'Ingrese el Número Telefónico Móvil para Contácto.'),
					'type'=>'text',
					'label'=>'TELÉFONO MÓVIL:'
				),	
				'</div>',
				
				'<div class="span-9">',
				'persona_email'=>array(
					'attributes'=>array('title'=>'Ingrese el Email para Contácto.','size'=>'45px'),
					'type'=>'text',
					'label'=>'CORREO ELECTRÓNICO (EMAIL):'
				),
				'</div><hr/><h4>Función de la persona en el Evento</h4>',
				
				
				'<div class="span-5">',
				'inscripcion_evento'=>array(
					'type'=>'hidden',
					'label'=>'EVENTO:',
					'attributes'=>array('value'=>$eventos),
					//'items'=>$eventos
				),
				'inscripcion_categoria'=>array(
					'type'=>'dropdownlist',
					'label'=>'GRUPO:',
					'items'=>$arrayGrupos										
				),	
				'</div>',
				
				'<div class="span-9">',
				'inscripcion_aplica'=>array(
					'type'=>'dropdownlist',
					'label'=>'FUNCION:',
					'items'=>$arrayFunciones
				),	
				'</div>',
				
				'<div class="span-13">',
				'inscripcion_deporte'=>array(
					'type'=>'dropdownlist',
					'label'=>'DEPORTE:',
					'items'=>$deportes
				),	
				'Nota: Elija NO APLICA para las personas que no aplican a este campo. Ej. Jefe de Misión.</div>',
				
				'<div class="span-19">',
				'inscripcion_modalidad'=>array(
					'attributes'=>array('value'=>'20'),
					'type'=>'hidden',
					'label'=>'MODALIDAD:',					
				),		
				'</div><hr/>',
				
				
			),
			'buttons'=>array(
				'submit'=>array(
					'type'=>'submit',
					'label'=>'Siguiente'
				),
				'reset'=>array(
					'type'=>'submit',
					'label'=>'Borrar Y Comenzar Desde Cero'
				)
			)
		), $this);
		}
		else
		{
		//$this->redirect(array('foto'));
		return new CForm(array(
		
			'title'=>'DEBE INGRESAR UNA FOTO ANTES DE CONTINUAR CON EL REGISTRO',
			'showErrorSummary'=>true,
			'attributes'=>array('enctype'=>'multipart/form-data'),
			'elements'=>array(
		'<a href="'.Yii::app()->request->baseUrl.'/index.php/fichas/foto">CLIC AQUI PARA AGREGAR FOTO.</a>',
		)),$this);
		
		}
	}
	
	
/**
	 * Recovers a partially completed registration.
	 * @param string User registration UUID; data will be recovered from the registration file.
	 * @return mixed array: user registration data; boolean: false if the registration data could not be recovered
	 */
	public function recoverRegistration($uuid) {
		$registrationFile = Yii::getPathOfAlias('application.runtime.registration').DIRECTORY_SEPARATOR.$uuid.'_draft.txt';
		if (file_exists($registrationFile)) {
			$data = unserialize(@file_get_contents($registrationFile));
			unlink($registrationFile);
			return $data;
		}
		else
			return false;
	}

	/**
	 * Saves a draft of registration data.
	 */
	public function saveRegistration($data) {
		$uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
			mt_rand(0, 0xffff), mt_rand(0, 0xffff),
			mt_rand(0, 0xffff),
			mt_rand(0, 0x0fff) | 0x4000,
			mt_rand(0, 0x3fff) | 0x8000,
			mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
		);

		$registrationDir = Yii::getPathOfAlias('application.runtime.registration');
		$registrationDirReady = true;
		if (!file_exists($registrationDir)) {
			if (!mkdir($registrationDir) || !chmod($registrationDir, 0775))
				$registrationDirReady = false;
		}
		if ($registrationDirReady && file_put_contents(
			$registrationDir.DIRECTORY_SEPARATOR.$uuid.'_draft.txt', serialize($data)
		))
			return $uuid;
		return false;
	}
	
	
}